﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidades;
using System.Data.SqlClient;
using System.Data;

namespace AccesoBD
{
    public class PlanesAfiliaciones
    {
        public Boolean registrarPlanAfiliacion(PlanAfiliacion p, List<DetallePlanAfiliacion> listDp)
        {
            Boolean res = true;

            int cantInsertPlan = 0;
            int cantInsertDetallesP = 0;



            if (listDp.Count > 0)
            {

                SqlConnection conexion = DB.Conectar();
                SqlTransaction trans = null;
                try
                {
                    trans = conexion.BeginTransaction();


                    //crear Plan
                    string cmdPlan = "INSERT INTO Plan_Afiliacion(nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta) VALUES (@nombre, @descripcion, @precioInscripcion, @precioCuota, @fechaVigenciaDesde, @fechaVigenciaHasta)";
                    List<SqlParameter> listaParam = new List<SqlParameter>();
                    listaParam.Add(new SqlParameter("@nombre", p.nombre));
                    if (p.descripcion == null)
                    {
                        listaParam.Add(new SqlParameter("@descripcion", DBNull.Value));
                    }
                    else
                    {
                        listaParam.Add(new SqlParameter("@descripcion", p.descripcion));
                    }
                    if (p.precioInscripcion == null)
                    {
                        listaParam.Add(new SqlParameter("@precioInscripcion", DBNull.Value));
                    }
                    else
                    {
                        listaParam.Add(new SqlParameter("@precioInscripcion", p.precioInscripcion));
                    }
                    listaParam.Add(new SqlParameter("@precioCuota", p.precioCuota));
                    listaParam.Add(new SqlParameter("@fechaVigenciaDesde", p.fechaVigenciaDesde));
                    if (p.fechaVigenciaHasta== null)
                    {
                        listaParam.Add(new SqlParameter("@fechaVigenciaHasta", DBNull.Value));
                    }
                    else
                    {
                        listaParam.Add(new SqlParameter("@fechaVigenciaHasta", p.fechaVigenciaHasta));
                    }
                    cantInsertPlan = DB.EjecutarCommand(cmdPlan, listaParam, conexion, trans);

                    //obtener idPlan
                    string cmdIdPlan = "Select @@identity FROM Plan_Afiliacion";
                    listaParam = new List<SqlParameter>();
                    int idPlan = int.Parse(DB.EjecutarScalar(cmdIdPlan, listaParam, conexion, trans));


                    //cargar detalles
                    if (cantInsertPlan > 0)
                    {
                        foreach (DetallePlanAfiliacion itemDp in listDp)
                        {
                            string comando = "INSERT INTO Detalle_PlanAfiliacion(idPlan, idEspecialidad, idPractica, precioAfiliado, precioMedico, fechaVigenciaDesde, fechaVigenciaHasta, nombreEspecialidad, nombrePractica) VALUES (@idPlan, @idEspecialidad, @idPractica, @precioAfiliado, @precioMedico, @fechaVigenciaDesde, @fechaVigenciaHasta, @nombreEspecialidad, @nombrePractica)";
                            List<SqlParameter> lstParametros = new List<SqlParameter>();
                            lstParametros.Add(new SqlParameter("@idPlan", idPlan));
                            if (itemDp.idEspecialidad == null)
                            {
                                lstParametros.Add(new SqlParameter("@idEspecialidad", DBNull.Value));
                                lstParametros.Add(new SqlParameter("@nombreEspecialidad", DBNull.Value));
                            }
                            else
                            {
                                lstParametros.Add(new SqlParameter("@idEspecialidad", itemDp.idEspecialidad));
                                lstParametros.Add(new SqlParameter("@nombreEspecialidad", itemDp.nombreEspecialidad));
                            }
                            if (itemDp.idPractica == null)
                            {
                                lstParametros.Add(new SqlParameter("@idPractica", DBNull.Value));
                                lstParametros.Add(new SqlParameter("@nombrePractica", DBNull.Value));
                            }
                            else
                            {
                                lstParametros.Add(new SqlParameter("@idPractica", itemDp.idPractica));
                                lstParametros.Add(new SqlParameter("@nombrePractica", itemDp.nombrePractica));
                            }
                            lstParametros.Add(new SqlParameter("@precioAfiliado", itemDp.precioAfiliado));
                            lstParametros.Add(new SqlParameter("@precioMedico", itemDp.precioMedico));
                            lstParametros.Add(new SqlParameter("@fechaVigenciaDesde", itemDp.fechaVigenciaDesde));
                            if(itemDp.fechaVigenciaHasta == null)
                                lstParametros.Add(new SqlParameter("@fechaVigenciaHasta", DBNull.Value));
                            else
                                lstParametros.Add(new SqlParameter("@fechaVigenciaHasta", itemDp.fechaVigenciaHasta));
                            cantInsertDetallesP = DB.EjecutarCommand(comando, lstParametros, conexion, trans);
                        }

                        if (cantInsertDetallesP > 0)
                        {
                            trans.Commit();
                            res = true;
                        }
                    }

                }
                catch (Exception)
                {
                    if (trans != null)
                        trans.Rollback();
                    res = false;
                    throw;
                }
                finally
                {
                    if (conexion != null && conexion.State == ConnectionState.Open)
                        conexion.Close();

                }
            }
            return res;
        }

        public Boolean eliminarPlanAfiliacion(string nombrePlan)
        {
            Boolean res = false;
            SqlConnection conn = DB.Conectar();
            SqlCommand sqlCommand = new SqlCommand("SELECT  idPlan, nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta FROM Plan_Afiliacion WHERE nombre = @nombre AND fechaVigenciaHasta > @fecha OR fechaVigenciaHasta is null", conn);
            sqlCommand.Parameters.Add(new SqlParameter("@nombre", nombrePlan));
            sqlCommand.Parameters.Add(new SqlParameter("@fecha", DateTime.Now.Date));
            SqlDataReader dr = sqlCommand.ExecuteReader();

            if (dr.Read())
            {
                SqlConnection connBaja = DB.Conectar();
                SqlCommand sqlBaja = new SqlCommand("UPDATE Plan_Afiliacion SET  fechaVigenciaHasta = @nuevaFechaVigenciaHasta WHERE (idPlan = @idPlan)", connBaja);
                sqlBaja.Parameters.Add(new SqlParameter("@idPlan", dr["idPlan"]));
                sqlBaja.Parameters.Add(new SqlParameter("@nuevaFechaVigenciaHasta", DateTime.Now.Date));
                sqlBaja.ExecuteNonQuery();
                res = true;
            }
            return res;
        }

        public void modificar(int idBusqueda)
        {
            SqlConnection connModificar= DB.Conectar();
            SqlCommand sqlModificar = new SqlCommand("UPDATE Plan_Afiliacion SET  fechaVigenciaHasta = @nuevaFechaVigenciaHasta WHERE (idPlan = @idPlan)", connModificar);
            sqlModificar.Parameters.Add(new SqlParameter("@idPlan", idBusqueda));
            sqlModificar.Parameters.Add(new SqlParameter("@nuevaFechaVigenciaHasta", DateTime.Now.Date.AddDays(-1)));
            sqlModificar.ExecuteNonQuery();
        }

        public PlanAfiliacion obtenerDatosPlanAfiliacion(int idBusqueda)
        {
            SqlConnection conexion = DB.Conectar();
            SqlCommand sqlcmd = new SqlCommand("SELECT idPlan, nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta FROM Plan_Afiliacion WHERE idPlan = @idPlan", conexion);
            sqlcmd.Parameters.Add(new SqlParameter("@idPLan", idBusqueda));
            SqlDataReader dr = sqlcmd.ExecuteReader();
            PlanAfiliacion p = new PlanAfiliacion();
            if (dr.Read())
            {
                p.idPlan = idBusqueda;
                p.nombre = dr["nombre"].ToString();
                p.descripcion = dr["descripcion"].ToString();
                p.precioInscripcion = float.Parse(dr["precioInscripcion"].ToString());
                p.precioCuota = float.Parse(dr["precioCuota"].ToString());
                p.fechaVigenciaDesde = Convert.ToDateTime(dr["fechaVigenciaDesde"].ToString()).Date;
                if (dr["fechaVigenciaHasta"] != DBNull.Value)
                {
                    p.fechaVigenciaHasta = Convert.ToDateTime(dr["fechaVigenciaHasta"].ToString()).Date;
                }
                else
                {
                    p.fechaVigenciaHasta = null;
                }
            }
            return p;             
        }

        public List<DetallePlanAfiliacion> obtnerDetalles(int idBusqueda)
        {
            SqlConnection conexion = DB.Conectar();
            List<DetallePlanAfiliacion> lista = null;
            try
            {
                SqlCommand sqlcmd = new SqlCommand("SELECT idDetallePlan, idPlan, idEspecialidad, idPractica, precioAfiliado, precioMedico, fechaVigenciaDesde, fechaVigenciaHasta, nombreEspecialidad, nombrePractica FROM Detalle_PlanAfiliacion WHERE idPlan = @idPlan ", conexion);
                sqlcmd.Parameters.Add(new SqlParameter("@idPLan", idBusqueda));
                SqlDataReader dr = sqlcmd.ExecuteReader();

                lista = new List<DetallePlanAfiliacion>();
                while (dr.Read())
                {
                    DetallePlanAfiliacion dp = new DetallePlanAfiliacion();
                    dp.idDetallePlan = Convert.ToInt32 (dr["idDetallePlan"]);
                    dp.idPlan = Convert.ToInt32(dr["idPlan"]);
                    if (dr["idEspecialidad"] != DBNull.Value)
                    {
                        dp.idEspecialidad = Convert.ToInt32(dr["idEspecialidad"]);
                        dp.idPractica = null;
                        dp.nombreEspecialidad = dr["nombreEspecialidad"].ToString();
                        dp.nombrePractica = null;
                    }
                    else
                    {
                        dp.idEspecialidad = null;
                        dp.idPractica = Convert.ToInt32(dr["idPractica"]);
                        dp.nombreEspecialidad = null;
                        dp.nombrePractica = dr["nombrePractica"].ToString();
                    }
                    dp.precioAfiliado = float.Parse(dr["precioAfiliado"].ToString());
                    dp.precioMedico = float.Parse(dr["precioMedico"].ToString());
                    dp.fechaVigenciaDesde = Convert.ToDateTime(dr["fechaVigenciaDesde"].ToString()).Date;
                    if (dr["fechaVigenciaHasta"] != DBNull.Value)
                    {
                        dp.fechaVigenciaHasta = Convert.ToDateTime(dr["fechaVigenciaHasta"].ToString()).Date;
                    }
                    else
                    {
                        dp.fechaVigenciaHasta = null;
                    }


                    lista.Add(dp);

                    dp = null;
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                conexion.Close();
            }
            return lista;
        }

        public List<DetallePlanAfiliacion> obtnerDetallesEspecialidades(int idBusqueda)
        {
            SqlConnection conexion = DB.Conectar();
            List<DetallePlanAfiliacion> lista = null;
            try
            {
                SqlCommand sqlcmd = new SqlCommand("SELECT idDetallePlan, idEspecialidad, precioAfiliado, precioMedico, fechaVigenciaDesde, fechaVigenciaHasta, nombreEspecialidad FROM Detalle_PlanAfiliacion WHERE idPlan = @idPlan AND idPractica is null", conexion);
                sqlcmd.Parameters.Add(new SqlParameter("@idPLan", idBusqueda));
                SqlDataReader dr = sqlcmd.ExecuteReader();

                lista = new List<DetallePlanAfiliacion>();
                while (dr.Read())
                {
                    DetallePlanAfiliacion dp = new DetallePlanAfiliacion();
                    dp.idDetallePlan = Convert.ToInt32(dr["idDetallePlan"]);
                    dp.idEspecialidad = Convert.ToInt32(dr["idEspecialidad"]);
                    dp.idPractica = null;
                    dp.nombreEspecialidad = dr["nombreEspecialidad"].ToString();
                    dp.nombrePractica = null;
                    dp.precioAfiliado = float.Parse(dr["precioAfiliado"].ToString());
                    dp.precioMedico = float.Parse(dr["precioMedico"].ToString());
                    if (dr["fechaVigenciaDesde"] != DBNull.Value)
                    {
                        dp.fechaVigenciaDesde = Convert.ToDateTime(dr["fechaVigenciaDesde"].ToString());
                    }
                    if (dr["fechaVigenciaHasta"] != DBNull.Value)
                    {
                        dp.fechaVigenciaHasta = Convert.ToDateTime(dr["fechaVigenciaHasta"].ToString());
                    }
                    else
                    {
                        dp.fechaVigenciaHasta = null;
                    }
                    lista.Add(dp);

                    dp = null;
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                conexion.Close();
            }
            return lista;
        }

        public List<DetallePlanAfiliacion> obtnerDetallesPracticas(int idBusqueda)
        {
            SqlConnection conexion = DB.Conectar();
            List<DetallePlanAfiliacion> lista = null;
            try
            {
                SqlCommand sqlcmd = new SqlCommand("SELECT idDetallePlan, idPractica, precioAfiliado, precioMedico, fechaVigenciaDesde, fechaVigenciaHasta, nombrePractica FROM Detalle_PlanAfiliacion WHERE idPlan = @idPlan AND idEspecialidad is null", conexion);
                sqlcmd.Parameters.Add(new SqlParameter("@idPLan", idBusqueda));
                SqlDataReader dr = sqlcmd.ExecuteReader();

                lista = new List<DetallePlanAfiliacion>();
                while (dr.Read())
                {
                    DetallePlanAfiliacion dp = new DetallePlanAfiliacion();
                    dp.idDetallePlan = Convert.ToInt32(dr["idDetallePlan"]);
                    dp.idEspecialidad = null;
                    dp.nombreEspecialidad = null;
                    
                    if (Convert.ToInt32(dr["idPractica"]) != 0)
                    {
                        dp.idPractica = Convert.ToInt32(dr["idPractica"]);
                        dp.nombrePractica = dr["nombrePractica"].ToString();
                    }
                    dp.precioAfiliado = float.Parse(dr["precioAfiliado"].ToString());
                    dp.precioMedico = float.Parse(dr["precioMedico"].ToString());
                    dp.fechaVigenciaDesde = Convert.ToDateTime(dr["fechaVigenciaDesde"].ToString());
                    if (dp.fechaVigenciaHasta != null)
                    {
                        dp.fechaVigenciaHasta = Convert.ToDateTime(dr["fechaVigenciaHasta"].ToString());
                    }
                    else
                    { dp.fechaVigenciaHasta = null; }
                    lista.Add(dp);

                    dp = null;
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                conexion.Close();
            }
            return lista;
        }

        public Boolean planVigente(string nombre, DateTime fecha)
        {
            Boolean res = true;
            SqlConnection connPlan = DB.Conectar();
            SqlCommand sqlObraPlan = new SqlCommand("SELECT  idPlan, fechaVigenciaHasta FROM Plan_Afiliacion WHERE nombre = @nombre ", connPlan);
            sqlObraPlan.Parameters.Add(new SqlParameter("@nombre", nombre));
            SqlDataReader drPlan = sqlObraPlan.ExecuteReader();
            if (drPlan.Read())
            {
                if (drPlan["fechaVigenciaHasta"] == DBNull.Value || Convert.ToDateTime(drPlan["fechaVigenciaHasta"]).Date > fecha)
                {
                    res = false;
                }
            }

            return res;
        }

        public int codigoEspecialidad(string nombre)
        {
            int codigo = -1;
            //Para saber el codigo de la especialidad
            SqlConnection connE = DB.Conectar();
            SqlCommand sqlEspecialidad = new SqlCommand("SELECT  codEspecialidad FROM Especialidad WHERE nombre = @nombre ", connE);
            sqlEspecialidad.Parameters.Add(new SqlParameter("@nombre", nombre));
            SqlDataReader drE = sqlEspecialidad.ExecuteReader();
            if (drE.Read())
            {
                codigo = Convert.ToInt32(drE["codEspecialidad"].ToString());
            }
            return codigo;
        }

        public int codigoPractica(string nombre)
        {
            int codigo = -1;
            //Para saber el codigo de la especialidad
            SqlConnection connP = DB.Conectar();
            SqlCommand sqlPractica = new SqlCommand("SELECT  idPractica FROM Practica WHERE nombre = @nombre ", connP);
            sqlPractica.Parameters.Add(new SqlParameter("@nombre", nombre));
            SqlDataReader drP = sqlPractica.ExecuteReader();
            if (drP.Read())
            {
                codigo = Convert.ToInt32(drP["idPractica"].ToString());
            }
            return codigo;
            connP.Close();
        }

        public int buscarIdPlan(string nombre, string descripcion, float precioInscripcion, float precioCuota, DateTime fechaVigenciaDesde)
        {
            int idPlan =-1 ;
            SqlConnection connPlan = DB.Conectar();
            SqlCommand sqlPlan = new SqlCommand("SELECT  idPlan  FROM Plan_Afiliacion WHERE nombre = @nombre AND descripcion = @descripcion AND precioInscripcion = @precioInscripcion AND precioCuota = @precioCuota AND fechaVigenciaDesde = @fechaVigenciaDesde AND (fechaVigenciaHasta > @fecha OR fechaVigenciaHasta is null)", connPlan);
            sqlPlan.Parameters.Add(new SqlParameter("@nombre",nombre));
            sqlPlan.Parameters.Add(new SqlParameter("@descripcion",descripcion));
            sqlPlan.Parameters.Add(new SqlParameter("@precioInscripcion", precioInscripcion));
            sqlPlan.Parameters.Add(new SqlParameter("@precioCuota", precioCuota));
            sqlPlan.Parameters.Add(new SqlParameter("@fechaVigenciaDesde", fechaVigenciaDesde));
            sqlPlan.Parameters.Add(new SqlParameter("@fecha", DateTime.Now.Date));
            SqlDataReader drPlan = sqlPlan.ExecuteReader();
            if (drPlan.Read())
            {
                idPlan = Convert.ToInt32(drPlan["idPlan"].ToString());
            }
            return idPlan;
        }

        public PlanAfiliacion buscarConFiltros(string nombre, DateTime fechaDesde, DateTime fechaHasta)
        {
            PlanAfiliacion p = new PlanAfiliacion();
                SqlConnection connPlan = DB.Conectar();
                SqlDataReader drPlan = null;
                if (nombre != "" && fechaDesde == null && fechaHasta  == null)
                {
                    SqlCommand sqlPlan = new SqlCommand("SELECT  nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta FROM Plan_Afiliacion WHERE nombre = @nombre AND (fechaVigenciaHasta > @fecha OR fechaVigenciaHasta is null)", connPlan);
                    sqlPlan.Parameters.Add(new SqlParameter("@nombre", nombre));
                    sqlPlan.Parameters.Add(new SqlParameter("@fecha", DateTime.Now.Date.ToShortDateString()));
                    drPlan = sqlPlan.ExecuteReader();
                }
                if (nombre != "" && fechaDesde != null && fechaHasta == null)
                {
                    SqlCommand sqlPlan = new SqlCommand("SELECT  nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta FROM Plan_Afiliacion WHERE nombre = @nombre AND fechaVigenciaDesde = @fechaVigenciaDesde AND (fechaVigenciaHasta > @fecha OR fechaVigenciaHasta is null)", connPlan);
                    sqlPlan.Parameters.Add(new SqlParameter("@nombre", nombre));
                    sqlPlan.Parameters.Add(new SqlParameter("@fechaVigenciaDesde", fechaDesde));
                    sqlPlan.Parameters.Add(new SqlParameter("@fecha", DateTime.Now.Date.ToShortDateString()));
                    drPlan = sqlPlan.ExecuteReader();
                }
                if (nombre != "" && fechaDesde == null && fechaHasta != null)
                {
                    SqlCommand sqlPlan = new SqlCommand("SELECT  nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta FROM Plan_Afiliacion WHERE nombre = @nombre AND fechaVigenciaHasta = @fechaVigenciaHasta AND (fechaVigenciaHasta > @fecha OR fechaVigenciaHasta is null)", connPlan);
                    sqlPlan.Parameters.Add(new SqlParameter("@nombre", nombre));
                    sqlPlan.Parameters.Add(new SqlParameter("@fechaVigenciaHasta", fechaHasta));
                    sqlPlan.Parameters.Add(new SqlParameter("@fecha", DateTime.Now.Date.ToShortDateString()));
                    drPlan = sqlPlan.ExecuteReader();
                }
                if (nombre != "" && fechaDesde != null && fechaHasta != null)
                {
                    SqlCommand sqlPlan = new SqlCommand("SELECT  nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta FROM Plan_Afiliacion WHERE nombre = @nombre AND fechaVigenciaDesde = @fechaVigenciaDesde AND fechaVigenciaHasta = @fechaVigenciaHasta AND (fechaVigenciaHasta > @fecha OR fechaVigenciaHasta is null)", connPlan);
                    sqlPlan.Parameters.Add(new SqlParameter("@nombre", nombre));
                    sqlPlan.Parameters.Add(new SqlParameter("@fechaVigenciaDesde", fechaDesde));
                    sqlPlan.Parameters.Add(new SqlParameter("@fechaVigenciaHasta", fechaHasta));
                    sqlPlan.Parameters.Add(new SqlParameter("@fecha", DateTime.Now.Date.ToShortDateString()));
                    drPlan = sqlPlan.ExecuteReader();
                }
                if (nombre == "" && fechaDesde != null && fechaHasta != null)
                {
                    SqlCommand sqlPlan = new SqlCommand("SELECT  nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta FROM Plan_Afiliacion WHERE fechaVigenciaDesde = @fechaVigenciaDesde AND fechaVigenciaHasta = @fechaVigenciaHasta AND (fechaVigenciaHasta > @fecha OR fechaVigenciaHasta is null)", connPlan);
                    sqlPlan.Parameters.Add(new SqlParameter("@fechaVigenciaDesde", fechaDesde));
                    sqlPlan.Parameters.Add(new SqlParameter("@fechaVigenciaHasta", fechaHasta));
                    sqlPlan.Parameters.Add(new SqlParameter("@fecha", DateTime.Now.Date.ToShortDateString()));
                    drPlan = sqlPlan.ExecuteReader();
                }
                if (nombre == "" && fechaDesde != null && fechaHasta == null)
                {
                    SqlCommand sqlPlan = new SqlCommand("SELECT  nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta FROM Plan_Afiliacion WHERE fechaVigenciaDesde = @fechaVigenciaDesde AND (fechaVigenciaHasta > @fecha OR fechaVigenciaHasta is null)", connPlan);
                    sqlPlan.Parameters.Add(new SqlParameter("@fechaVigenciaDesde", fechaDesde));
                    sqlPlan.Parameters.Add(new SqlParameter("@fecha", DateTime.Now.Date.ToShortDateString()));
                    drPlan = sqlPlan.ExecuteReader();
                }
                if (nombre == "" && fechaDesde == null && fechaHasta != null)
                {
                    SqlCommand sqlPlan = new SqlCommand("SELECT  nombre, descripcion, precioInscripcion, precioCuota, fechaVigenciaDesde, fechaVigenciaHasta FROM Plan_Afiliacion WHERE fechaVigenciaHasta = @fechaVigenciaHasta AND (fechaVigenciaHasta > @fecha OR fechaVigenciaHasta is null)", connPlan);
                    sqlPlan.Parameters.Add(new SqlParameter("@fechaVigenciaHasta", fechaHasta));
                    sqlPlan.Parameters.Add(new SqlParameter("@fecha", DateTime.Now.Date.ToShortDateString()));
                    drPlan = sqlPlan.ExecuteReader();
                }

                if (drPlan.Read())
                {
                    p.nombre = drPlan["nombre"].ToString();
                    p.descripcion = drPlan["descripcion"].ToString();
                    p.precioInscripcion = float.Parse(drPlan["precioInscripcion"].ToString());
                    p.precioCuota = float.Parse(drPlan["precioCuota"].ToString());
                    p.fechaVigenciaDesde = Convert.ToDateTime(drPlan["fechaVigenciaDesde"].ToString());
                    p.fechaVigenciaHasta = Convert.ToDateTime(drPlan["fechaVigenciaHasta"].ToString());
                }
                return p;
        }

        public List<PlanAfiliacion> obtenerPlanes()
        {
            List<PlanAfiliacion> lista = null;
            SqlConnection conexion = DB.Conectar();
            try
            {
                string strcomando = "SELECT idPlan,nombre FROM Plan_Afiliacion";
                SqlCommand sqlcmd = new SqlCommand(strcomando, conexion);
                SqlDataReader dr = sqlcmd.ExecuteReader();
                PlanAfiliacion plan;
                while (dr.Read())
                {
                    if (lista == null)
                        lista = new List<PlanAfiliacion>();
                    plan = new PlanAfiliacion();
                    plan.idPlan = Convert.ToInt32(dr["idPlan"].ToString());
                    plan.nombre = dr["nombre"].ToString();
                    lista.Add(plan);
                    plan = null;
                }

            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                conexion.Close();
            }
            return lista;
        }
    }
}
